<template>
	<view>
		 <view class="login-container">
		    <!-- 提示登录的图标 -->
		    <uni-icons type="contact-filled" size="100" color="#AFAFAF"></uni-icons>
		    <!-- 登录按钮 -->
			<!-- 更新如下@click="getUserProfile" -->
		   <button type="primary" class="btn-login" @click="getUserInfo">一键登录</button>
		    <!-- 登录提示 -->
		    <view class="tips-text">登录后尽享更多权益</view>
		  </view>
	</view>
</template>

<script>
	import { mapMutations, mapState } from 'vuex'
	export default {
		name:"my-login",
		data() {
			return {
				
			};
		},
		computed:{
			 // 调用 mapState 辅助方法，把 m_user 模块中的数据映射到当前用组件中使用
			 ...mapState('m_user', ['redirectInfo']),
		},
		methods:{
			...mapMutations('m_user',['updateUserInfo','updateToken']),
			getUserInfo(){
			//判断是否获取用户信息成功
			// if (e.detail.errMsg === 'getUserInfo:fail auth deny') return uni.$showMsg('您取消了登录授权！')
			//  console.log('e.detail.userInfo',e.detail.userInfo)
			//  this.updateUserInfo(e.detail.userInfo)
			//   //获取登录成功后的 Token 字符串
			//   console.log('e.detail',e.detail)
			//  this.getToken(e.detail)
			   uni.getUserProfile({		 
			           desc: '登录后可同步数据',
			           lang: 'zh_CN',			 
			           success: (info) => {
			             console.log('info',info);
			             this.updateUserInfo(info.userInfo)
			             this.getToken(info)
			           },
			           fail: (err) => {
			             if (err.errMsg === 'getUserProfile:fail auth deny') uni.$showMsg('您取消了授权！')
			           }
			         })
			 },
		 async	getToken(info){
				 // 调用微信登录接口
				  // const [err, res] = await uni.login().catch(err => err)
				  // 判断是否 uni.login() 调用失败
				  // if (err || res.errMsg !== 'login:ok') return uni.$showError('登录失败！')
				
				  // 准备参数对象
				  // const query = {
				  //   code: res.code,
				  //   encryptedData: info.encryptedData,
				  //   iv: info.iv,
				  //   rawData: info.rawData,
				  //   signature: info.signature
				  // }
				  // console.log(query)
				  // 换取 token
				  // const { data: loginResult } = await uni.$http.post('/api/public/v1/users/wxlogin', query)
				  // if (loginResult.meta.status !== 200) return uni.$showMsg('登录失败！')
				  // uni.$showMsg('登录成功')
				  // this.updateToken(loginResult.message.token)
				  
				  uni.login({
				            provider: 'weixin',
				            success: (res) => {
				              console.log('login-res', res)
				  
				              if (res && res.errMsg === 'login:ok') {
				                const query = {				  
				                  code: res.code,			  
				                  encryptedData: info.encryptedData,			  
				                  iv: info.iv,			  
				                  rawData: info.rawData,			  
				                  signature: info.signature
				                }
				  
				                console.log("query", query)
				                // const { data: loginResult } = uni.$http.post('/api/public/v1/users/wxlogin', query)
				              // 获取token失败时候使用
				  
				                const loginResult = {
				  
				                  "message": {
				  
				                    "user_id": 12,
				  
				                    "user_email_code": null,
				  
				                    "is_active": null,
				  
				                    "user_sex": "男",
				  
				                    "user_qq": "",
				  
				                    "user_tel": "",
				  
				                    "user_xueli": "本科",
				  
				                    "user_hobby": "",
				  
				                    "user_introduce": null,
				  
				                    "create_time": 1525402223,
				  
				                    "update_time": 1525402223,
				  
				                    "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjIzLCJpYXQiOjE1NjQ3MzAwNzksImV4cCI6MTAwMTU2NDczMDA3OH0.YPt-XeLnjV-_1ITaXGY2FhxmCe4NvXuRnRB8OMCfnPo"
				                  },
				                  "meta": {
				  
				                    "msg": "登录成功",
				  
				                    "status": 200
				  
				                  }
				  
				                }			  
				                if (loginResult.meta.status !== 200) return uni.$showMsg('登录失败！')
				                this.updateToken(loginResult.message.token)
				                uni.$showMsg('登录成功！')
				                this.navigateBack()
				              } else {
				  
				                uni.$showMsg('登录失败！' + res)
				  
				              }
				  
				            },
				  
				            fail: (err) => {
				  
				              uni.$showMsg('登录失败！！！' + res)
				  
				            }
				  
				          })
			},
			navigateBack() {
			  // redirectInfo 不为 null，并且导航方式为 switchTab
			  if (this.redirectInfo && this.redirectInfo.openType === 'switchTab') {
			    // 调用小程序提供的 uni.switchTab() API 进行页面的导航
			    uni.switchTab({
			      // 要导航到的页面地址
			      url: this.redirectInfo.from,
			      // 导航成功之后，把 vuex 中的 redirectInfo 对象重置为 null
			      complete: () => {
			        this.updateRedirectInfo(null)
			      }
			    })
			  }
			}
		}
	}
</script>

<style lang="scss">
.login-container{
	width: 100%;
	height: 300px;
	position: absolute;
	top: 40%;
	transform: translateY(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	.btn-login{
		width: 90%;
		border-radius: 100px;
		margin: 15px 0;
		background-color: #c00000;
	}
	 .tips-text {
	    font-size: 12px;
	    color: gray;
	  }
}
</style>